#include <unistd.h>
#include <iostream>

#include <sys/types.h>
#include <sys/wait.h>

#include <signal.h>

using namespace std;


// 验证虚拟机一秒钟CPU跑的次数是否比云服务器快

// int main()
// {
//   alarm(1);
//   int count = 0;
//   while(true)
//   {
//     cout << count++ << endl;
//   }
//   return 0;
// }


// 验证管道当一方读端关闭，写端继续写时操作系统会做上面 ----- 终止写端（因为没人读，写已经没有意义）
// 父进程写，子进程读
// int main()
// {
//   // 就是一个结构体
//   // sigset_t set;

//   int pipefd[2];
//   pipe(pipefd);

//   pid_t id = fork();

//   if (id == 0)
//   {
//     // 子进程
//     // 关闭读端 和 写端
//     close(pipefd[0]);string buffer = "我是子进程，我在和你写东西";
  
//     while (true)
//       write(pipefd[1], buffer.c_str(), sizeof(buffer));
//   }

//   // 父进程
//   // 关闭读端
//   close(pipefd[0]);

//   int status;
//   waitpid(id, &status, 0);
//   cout << "父进程的退出码为：" << ((status>>8) & 0xffffffff) << " 父进程的退出信号为：" << (status & 0x7f) << endl;
//   return 0;
// }



// 验证用默认状态 和 忽略状态 时获取SIGCHLD信号会不会没有僵尸进程
// while true; do
//     ps axj | head -1 && ps axj | grep "xin_hao" | grep -v "grep"
//     sleep 1
// done

int main()
{
  signal(SIGCHLD, SIG_DFL); // 默认处理
  // signal(SIGCHLD, SIG_IGN); // 忽略处理

  pid_t id = fork();

  if (id == 0)
  {
    // child
    sleep(10);
    exit(0);
  }

  return 0;
}